package cn.tedu.weibo.result;

import lombok.*;

/**
 * 统一响应结果
 * 所有的Controller在给前端回复信息时，保证风格，结构统一。
 * 便于对Controller响应的管理和重用，也便于前端对响应的处理操作。
 */

@Getter
@Setter
@NoArgsConstructor//无参构造器
@AllArgsConstructor//全参构造器
public class JSonResult {
    /**
     * 每个不同的业务对应的不同处理结果都应当有一个独立的状态码
     */
    private Integer statusCode;
    /**
     * 响应的提示信息
     */
    private String message;
    /**
     * 响应的数据
     */
    private Object data;

    public JSonResult(Status status) {
        this.statusCode = status.getStatusCode();
        //get statusCode的属性
        this.message = status.getMessage();
    }

    public JSonResult(Status status,Object data){
//        this.statusCode = status.getStatusCode();
//        this.message = status.getMessage();
        this(status);
        this.data=data;
    }

    public static JSonResult success(){
        //return new JSonResult(Status.OPERATION_SUCCESS);
        ///return new JSonResult(Status.OPERATION_SUCCESS,null);
        return success(null); //就是复用了success(null)
    }

    public static JSonResult success(Object data){
        return new JSonResult(Status.OPERATION_SUCCESS,data);
    }

}
